Modern day semiconductor memories have been produced with very high storage capacities (hundreds of millions of bits) with scaling down of transistors and the power source voltage. However, an incremental increase in storage capacity with low power source voltage tends to reduce the reliability of these memory devices. For example, the scaling down of transistor has reduced the capacitance in each memory cell, often resulting in random one-bit error due to cosmic radiation or alpha radiation or other random event. There are also coupling effects internal to the silicon, silicon aging effects, and DRAM bits changing state before a refresh due to increased temperatures. These random one-bit errors occur frequently enough that such errors can no longer be ignored as these devices are employed into systems where a bit-error could have a catastrophic consequence. The increase in the number of cells in memory devices tends to reduce the mean time to failure (MTTF) of the entire memory device. As a result, the level of reliability required for the memory device become increasingly stringent. In some applications, semiconductor memory devices have been implemented with error correction to improve the reliability of the memory devices.
Error correction code (ECC) is a technique that can be used to reduce or recover bit errors in memory devices. A well know error correction code is the Hamming code, which appends a series of check bits to a data word as the data word is stored in the memory device. Upon a read operation, the retrieved check bits are compared to recalculated check bits to detect and correct bit errors in the read out data. By adding more check bits and appropriately overlapping the subsets of data bits represented by the check bits, these error correcting codes may provide for multiple error corrections and detection. ECC error correction operation is performed transparent to the user or to the system in which the memory device is incorporated. The read out data from the memory device bears no distinction between original data or corrected data.